package com.baizhi.controller;

import com.baizhi.entity.Product;
import com.baizhi.vos.CollectionVO;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.nutz.json.Json;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@RestController
@Slf4j
public class ProductController {

    @Value("${server.port}")
    private int port;


    @GetMapping("/products")
    public List<Product> findByCategoryId(Integer id) {
        List<Product> list = new ArrayList<>();
        list.add(new Product(1, "内衣", 233.23, new Date()));
        list.add(new Product(2, "内裤", 2223.23, new Date()));
        list.add(new Product(3, "秋衣", 233.23, new Date()));
        return list;
    }

    //定义一个接口接受id类型的参数,返回一个基于id查询的对象

    @GetMapping("/product/{id}")
    public Product product(@PathVariable("id") Integer id) {
        return new Product(1, "无敌短裙", 23.23, new Date());
    }

    //接受一个集合类型的参数
    @GetMapping("/test4")
    public String test4(CollectionVO collectionVO) {
        return Json.toJson(collectionVO);
    }

    //定义一个接口
    @GetMapping("/test3")
    public String test3(String[] ids) {
        for (String id : ids) {
            log.info("id[{}]", id);
        }
        return Json.toJson(ids);
    }

    //定义一个对象 类型
    @PostMapping("/test2") //@RequestPart
    public String test2(@RequestBody Product product) {
        return Json.toJson(product);
    }

    //零散类型路径传参
    @GetMapping("/test1/{id}/{name}")
    public String test1(@PathVariable("id") Integer id, @PathVariable("name") String name) {

        return id + "" + name;
    }
    //定义一个接受零散类型参数接口

    @GetMapping("test")
    public String test(String name, Integer age) {
        log.info("name:[{}]", name);
        log.info("age:[{}]", age);
        return "testOK" + port;
    }

    @GetMapping("/product")
    public String product() {
        log.info("进入商品服务");
        return "商品服务 端口为" + port;
    }

    @GetMapping("list")
    public String list() {
        log.info("列表");
        return "我是list" + port;
    }

}
